﻿using System;
using System.Net;
using System.Windows;
using System.Collections.Generic;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightGraph.Graph
{
    public class Edge
    {
        string _source, _target;
        List<Pair> _linepoints;
        List<Pair> _arrowpoints;
        Label _label;
        List<SilverlightGraph.Graph.Attribute> _attributes;

        public Edge(string source, string target, List<Pair> points)
        {
            this._source = source;
            this._target = target;
            this._linepoints = points;
            this._arrowpoints = new List<Pair>();
            this._label = new Label();
            this._attributes = new List<Attribute>();
        }

        public Edge(string source, string target, List<Pair> points, List<Attribute> attributes)
        {
            this._source = source;
            this._target = target;
            this._linepoints = points;
            this._label = null;
            this._attributes = attributes;
            this._arrowpoints = new List<Pair>();
        }

        public Edge(string source, string target, List<Pair> points, List<Pair> arrowpoints, List<Attribute> attributes)
        {
            this._source = source;
            this._target = target;
            this._linepoints = points;
            this._label = null;
            this._attributes = attributes;
            this._arrowpoints = arrowpoints;
        }

        public Edge(string source, string target, Label label, List<Pair> points, List<Pair> arrowpoints, List<Attribute> attributes)
        {
            this._source = source;
            this._target = target;
            this._linepoints = points;
            this._label = label;
            this._attributes = attributes;
            this._arrowpoints = arrowpoints;
        }

        public Edge(string source, string target, List<Pair> points, Label l)
        {
            this._source = source;
            this._target = target;
            this._linepoints = points;
            this._label = l;
            this._attributes = new List<Attribute>();
            this._arrowpoints = new List<Pair>();
        }

        public string Source
        {
            get { return _source; }
            set { value = _source; }
        }

        public string Target
        {
            get { return _target; }
            set { value = _target; }
        }

        public List<Pair> Points
        {
            get { return _linepoints; }
            set { value = _linepoints; }
        }

        public List<Pair> ArrowPoints
        {
            get { return _arrowpoints; }
            set { value = _arrowpoints; }
        }

        public Label Lbl
        {
            get { return _label; }
            set { value = _label; }
        }
    }
}


